#include <control_thread.h>

MyControlThread::MyControlThread(QString device)
{
    dev = device;
    stop_flag = false;
}

void MyControlThread::run()
{
    qRegisterMetaType<std::vector<uint16_t> >("std::vector<uint16_t>");

//    serial = new QSerialPort();

//    serial->setPortName(dev);
//    serial->setBaudRate(QSerialPort::Baud115200);
//    serial->setDataBits(QSerialPort::Data8);
//    serial->setParity(QSerialPort::NoParity);
//    serial->setStopBits(QSerialPort::OneStop);
//    serial->setFlowControl(QSerialPort::NoFlowControl);

//    if (!serial->open(QIODevice::ReadOnly))
//    {
//        qDebug() << "Failed to open serial port";
//        emit update_controler_log("Failed to open serial port");
//        return;
//    }

//    qDebug() << "Successfully opened the serial port!";
//    emit update_controler_log("Successfully opened the serial port!");

//    QByteArray buffer;
//    std::vector<uint16_t> ch;
//    ch.resize(10);

//    while (!stop_flag)
//    {
//        serial->waitForReadyRead(20);
//        buffer += serial->readAll();
//        int headerIndex = buffer.indexOf(0x0F);
//        if (headerIndex < 0)
//        {
//            buffer.clear(); // clear buffer if header byte is not found
//            continue;
//        }

//        // discard any data before the header byte
//        buffer.remove(0, headerIndex);

//        // check if there is enough data for a full packet
//        if (buffer.size() < 8)
//        {
//            continue;
//        }

//        //phrase data
//        ch[1] = (uint16_t)buffer[0] + (uint16_t)(buffer[1] << 8);
//        ch[2] = (uint16_t)buffer[2] + (uint16_t)(buffer[3] << 8);
//        ch[3] = (uint16_t)buffer[4] + (uint16_t)(buffer[5] << 8);
//        ch[4] = (uint16_t)buffer[6] + (uint16_t)(buffer[7] << 8);

//        emit update_sbus_frame(ch);

//    }

//    serial->close();
//    delete serial;
}

void MyControlThread::stop()
{
    stop_flag = true;
}
